// app.js
const auth = require('./utils/auth')

App({
  onLaunch() {
    // 初始化全局数据
    const isLoggedIn = auth.isLoggedIn()

    if (isLoggedIn) {
      // 已登录，获取用户信息和角色
      this.globalData.userInfo = auth.getUserInfo()
      this.globalData.userRole = auth.getUserRole()
      this.globalData.token = auth.getToken()
    } else {
      // 未登录，初始化默认值
      this.globalData.userInfo = null
      this.globalData.userRole = 'user'
      this.globalData.token = ''
    }
  },

  // 检查页面权限
  checkPermission(pageType = 'all') {
    // 如果未登录，重定向到登录页
    if (!auth.isLoggedIn()) {
      wx.navigateTo({
        url: '/pages/login/login'
      })
      return false
    }

    // 检查用户是否被禁用
    if (auth.isUserBanned()) {
      wx.showToast({
        title: '您的账号已被禁用',
        icon: 'none'
      })

      // 清除登录信息并跳转到登录页
      auth.clearLoginInfo()
      setTimeout(() => {
        wx.navigateTo({
          url: '/pages/login/login'
        })
      }, 1500)

      return false
    }

    // 判断角色和页面权限
    const userRole = auth.getUserRole();
    let hasPermission = true;

    // 根据页面类型和用户角色判断
    switch (pageType) {
      case 'user':
        hasPermission = auth.isUser();
        break;
      case 'provider':
        hasPermission = auth.isProvider();
        break;
      case 'admin':
        hasPermission = auth.isAdmin();
        break;
      case 'all':
        hasPermission = true;
        break;
      default:
        hasPermission = false;
    }

    if (!hasPermission) {
      wx.showToast({
        title: '您没有权限访问该页面',
        icon: 'none'
      })

      // 根据用户角色跳转到相应的首页
      setTimeout(() => {
        wx.switchTab({
          url: '/pages/index/index'
        })
      }, 1500)

      return false
    }

    return true
  },

  // 检查登录状态，如果未登录则跳转到登录页
  checkLogin() {
    if (!auth.isLoggedIn()) {
      wx.navigateTo({
        url: '/pages/login/login'
      })
      return false
    }
    return true
  },

  // 切换用户角色（用于测试）
  switchUserRole() {
    const currentRole = auth.getUserRole()
    let newRole = 'user'

    // 循环切换角色: user -> provider -> admin -> user
    switch (currentRole) {
      case 'user':
        newRole = 'provider'
        break
      case 'provider':
        newRole = 'admin'
        break
      case 'admin':
        newRole = 'user'
        break
      default:
        newRole = 'user'
    }

    auth.setUserRole(newRole)
    this.globalData.userRole = newRole

    // 重新加载当前页面
    const pages = getCurrentPages()
    const currentPage = pages[pages.length - 1]
    if (currentPage) {
      currentPage.onLoad(currentPage.options)
      currentPage.onShow()
    }

    return newRole
  },

  globalData: {
    userInfo: null,
    // API接口基础URL，根据实际环境修改
    baseUrl: 'http://localhost:8102',
    userRole: 'user',
    token: '',
    activeCategoryId: null // 用于存储需要在服务页面激活的分类ID
  }
}) 